
// 路由守卫以及加载效果
import router from "./router";
// 引入进度条插件
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

import store from '@/store'
import { Message } from "element-ui";


// 路由白名单(不需要token也能访问的路由)
const whiteList = ['/login','/404']

// 前置守卫
router.beforeEach( async (to,from,next) => {
  // 前置守卫中开启进度条显示
  nprogress.start()

  // 判断是否存在token
  if(store.getters.token){
    // console.log(to);
    // 存在token
    if(to.path === '/login'){
      // 存在token代表已登录，直接跳转主页
      next('/')
      // 路由重定向后不会经过after守卫，这里需要手动停止进度条
      nprogress.done()
    }else {
      // 判断是否获取过资料
      if(!store.getters.userId){
        // 注意异步函数
       await store.dispatch('user/getUserInfo')
      }
      next()
    }
  }else {
    console.log(whiteList.includes(to.path));
    // 无token,判断是否为白名单，不在则重定向回登录
    if(whiteList.includes(to.path)){
      // 白名单放行
      next()
    }else {
      // 非白名单无token直接结束进度条跳转登录
      next('/login')
      nprogress.done()
      Message.error({message: '未登录,非法访问'})
    }
  }


})


// 后置守卫
router.afterEach(() => {
  // 进度条加载完成
  nprogress.done()

})